%module DictItemModule

%import "LibDL/Tensor/Tensor.i"
%import "LibDL/ordered_dict/boost_any_wrapper.i"

SWIG_JAVABODY_PROXY(public, public, SWIGTYPE)
SWIG_JAVABODY_TYPEWRAPPER(public, public, public, SWIGTYPE)

%include "std_string.i"
%include "std_pair.i"
#ifndef __WIN32__
typedef long int int64_t;
typedef unsigned long long int	uint64_t;
#else
%include "stdint.i"
#endif

%{
#include "./LibDL/ordered_dict/dict_item.h"
#include "./LibDL/ordered_dict/boost_any_wrapper.h"
#include "./LibDL/Tensor/Tensor.h"
#include <boost/any.hpp>
%}

%include "./LibDL/ordered_dict/dict_item.h"

%template(StdPairStrTensor) std::pair<std::string, Tensor>;
%template(StdPairStrAny) std::pair<std::string, any_wrapper>;

%template(DictItem) Dict_item<std::string, any_wrapper>;
%template(DictItemStrTensor) Dict_item<std::string, Tensor>;
%template(DictItemStrStr) Dict_item<std::string, std::string>;

%template(DictItemList) std::vector<Dict_item<std::string, any_wrapper>>;